AWS Lambda와 SST Warm 옵션의 정확한 이해 (서버리스 배포 시 알아야 할 개념)

2025-05-31
AWSlambdasstwarmer

저처럼 Next.js 웹을 AWS Lambda에 서버리스 형태로 배포할 때, 많은 개발자가 흔히 겪는 혼란이 있습니다.
특히 Lambda의 인스턴스(Instance), 콜드 스타트(Cold Start), 워밍(Warming) 같은 용어는 자칫 잘못 이해하면 오랜 시간 혼란을 겪게 됩니다.

이 글은 실제로 개발자가 궁금해하는 포인트를 중심으로 쉽게 정리했습니다.

1. Lambda 함수 vs. Lambda 인스턴스: 도대체 무슨 차이?

Lambda를 처음 사용할 때 가장 흔히 겪는 혼란이 이 부분입니다.

  • Lambda 함수
    이건 간단히 말해서 작성된 코드 그 자체입니다. 개발자가 작성한 로직(Next.js 서버 처리 코드 등)을 말합니다.
  • Lambda 인스턴스
    이 함수가 실제로 실행되는 컨테이너 환경입니다. 하나의 코드(함수)를 AWS는 실제 요청이 들어올 때마다 실행 가능한 환경(인스턴스)을 여러 개 생성하여 처리합니다.

쉽게 비유하자면

  • Lambda 함수는 요리 레시피입니다. (단 하나의 레시피)
  • Lambda 인스턴스는 실제로 요리를 만드는 주방입니다. 손님(요청)이 많으면 주방 여러 개가 동시에 필요합니다.

2. 콜드 스타트(Cold Start)는 왜 발생하는가?

Lambda의 핵심적인 한계점 중 하나는 바로 콜드 스타트입니다. 콜드 스타트란 Lambda 인스턴스가 처음 만들어질 때 생기는 지연을 의미합니다.

이 현상이 발생하는 이유는 Lambda의 특성이 있습니다.

  • 하나의 Lambda 인스턴스는 동시에 단 하나의 요청만 처리할 수 있습니다.
  • 만약 이미 처리 중인 인스턴스에 동시에 다른 요청이 오면, AWS는 새로운 인스턴스를 추가로 생성해야 합니다.
  • 바로 이 새로운 인스턴스를 생성하는 시간이 콜드 스타트이며, 때로는 1초 이상의 긴 지연을 일으킬 수 있습니다.

예시 상황을 들어볼까요?
사용자가 부하가 심한 페이지(처리 시간이 긴 페이지)에 접근합니다.
이때 두 번째 사용자가 바로 그 순간 동시에 접근한다면?
이미 처리 중인 인스턴스가 있으므로, AWS는 두 번째 사용자를 위한 새로운 인스턴스를 즉시 생성해야 합니다.
이때!! 콜드 스타트 지연이 발생합니다.

3. 그렇다면 워머(Warmer)는 무엇이고, 어떻게 동작하는가?

워머(Warmer)는 바로 콜드 스타트를 줄이기 위한 전략입니다. 서버리스 형태에서 흔히 쓰이는 warm 옵션이 바로 이 워머를 관리합니다.

워머가 하는 일은 다음과 같습니다.

  • 주기적으로(보통 5분 간격) Lambda에 가짜 요청(heartbeat)을 보냅니다.
  • 이 요청 덕분에 AWS는 Lambda 인스턴스를 활성 상태로 유지하게 됩니다. (비활성 상태 방지)
  • 사용자의 실제 요청이 오면, 이미 활성 상태인 인스턴스가 즉시 응답할 수 있습니다.

여기서 많은 분이 헷갈립니다.

  • 워머가 요청 경로에 들어가 처리하는 게 아닙니다.
  • 단순히 Lambda가 즉시 사용 가능한 상태로 유지하는 배경 작업입니다.

4. warm 옵션의 숫자는 무엇을 의미하나?

SST의 문서에서 볼 수 있는 warm: 1, warm: 3 같은 숫자는 다음을 의미합니다.

  • warm: 1 → 최소 1개의 Lambda 인스턴스를 항상 활성 상태로 유지
  • warm: 3 → 최소 3개의 Lambda 인스턴스를 항상 활성 상태로 유지

만약 동시 요청이 거의 없거나 적다면, warm: 1만으로 충분히 빠른 응답이 가능합니다.
그러나 동시에 여러 요청이 자주 발생할 경우, 값이 크면 클수록 많은 인스턴스가 미리 준비되므로, 콜드 스타트 발생 가능성이 줄어듭니다.

물론 제 서비스들은 아직 한개로도 충분합니다 😓

5. 개발자가 자주 헷갈리는 포인트 Q&A

❓ Q: 이미 워밍된 인스턴스인데 왜 다음 사용자에게 콜드 스타트가 발생할까?

  • A: 실제로는 동시에 요청이 몰렸을 때만 콜드 스타트가 발생합니다.
    2초, 5초 간격처럼 순차적으로 요청이 들어온다면 이미 활성된 인스턴스가 즉시 재사용됩니다.

❓ Q: Lambda 함수 자체가 여러 개 생기는 건가?

  • A: 아닙니다. Lambda 함수(코드)는 단 한 개입니다. 여러 개 생기는 건 오직 **함수를 실행할 컨테이너(인스턴스)**뿐입니다.

❓ Q: 그렇다면 Lambda는 무조건 동시에 한 요청만 처리 가능한가?

  • A: 한 개의 인스턴스는 무조건 한 요청만 처리 가능하며, 동시 요청은 여러 인스턴스로 분산되어 병렬 처리됩니다.

6. 결론과 실무적 팁

Lambda를 Next.js 애플리케이션과 결합할 때 중요한 포인트

  • 트래픽 규모를 예상하고 적절한 warm 값을 설정하는 것
  • 부하가 심한 요청일수록 warm 값을 높여 미리 다수의 인스턴스를 유지할 필요성이 있다는 점입니다.

초기 단계 서비스라면 대부분의 경우 warm: 1이 적절합니다.

서비스가 성장하면 콜드 스타트 문제를 최소화하기 위해 점차적으로 늘리거나, 동시성 처리가 가능한 AWS ECS나 Fargate와 같은 대체 서비스로 넘어가는 것도 고려할 수 있습니다.

제가 헷갈려했고 주변에서 동일한 경험을 하는 분들을 보니 블로그에 올려두는것도 좋겠다 싶어서 겸사겸사 정리했습니다.
저와 함께 Lambda의 개념이 이제는 명확해졌기를 바랍니다! 🚀

  • 1. Lambda 함수 vs. Lambda 인스턴스: 도대체 무슨 차이?
  • 2. 콜드 스타트(Cold Start)는 왜 발생하는가?
  • 3. 그렇다면 워머(Warmer)는 무엇이고, 어떻게 동작하는가?
  • 4. warm 옵션의 숫자는 무엇을 의미하나?
  • 5. 개발자가 자주 헷갈리는 포인트 Q&A
    • ❓ Q: 이미 워밍된 인스턴스인데 왜 다음 사용자에게 콜드 스타트가 발생할까?
    • ❓ Q: Lambda 함수 자체가 여러 개 생기는 건가?
    • ❓ Q: 그렇다면 Lambda는 무조건 동시에 한 요청만 처리 가능한가?
  • 6. 결론과 실무적 팁